# -*- coding:utf-8 -*-
# title           :
# description     :
# author          :Python超人/三月三提供
# date            :2024-05-01
# link            :https://gitcode.net/pythoncr/
# python_version  :3.9
# ==============================================================================
from 神笔码靓.神笔库.元素库 import 路径元素


class 消息框工具集:
    def __init__(self, 高清图=None):
        from 神笔码靓.神笔库 import 神笔绘图板
        self.高清图: 神笔绘图板 = 高清图
        self.dwg = 高清图.dwg

    @staticmethod
    def 右消息框路径(开始点, 消息框宽度, 消息框高度, 倒角半径=10):
        角位移 = 15
        角上距 = 53
        开始X, 开始Y = 开始点
        px1, py1 = 开始X, 开始Y
        px2, py2 = 开始X - 角位移, 开始Y - 角位移
        px3, py3 = 开始X - 角位移, 开始Y - 角上距
        px4, py4 = 开始X - 角位移 - 消息框宽度, 开始Y - 角上距
        px5, py5 = 开始X - 角位移 - 消息框宽度, 开始Y - 角上距 + 消息框高度
        px6, py6 = 开始X - 角位移, 开始Y - 角上距 + 消息框高度
        px7, py7 = 开始X - 角位移, 开始Y + 角位移
        ax3, ay3 = px3 - 倒角半径, py3
        ax4, ay4 = px4, py4 + 倒角半径
        ax5, ay5 = px5 + 倒角半径, py5
        ax6, ay6 = px6, py5 - 倒角半径
        # self.十字(ax6, ay6, 宽度=20, 高度=20)
        # "椭圆弧线": "A",  # (rx, ry), x_axis_rotation, (large_arc_flag, sweep_flag), (x, y)
        消息框路径 = [("移动", px1, py1),
                 ("直线", px2, py2),
                 ("垂直线", py3 + 倒角半径),
                 ("椭圆弧线", 倒角半径, 倒角半径, 0, 0, 0, ax3, ay3),
                 ("水平线", px4 + 倒角半径),
                 ("椭圆弧线", 倒角半径, 倒角半径, 0, 0, 0, ax4, ay4),
                 ("垂直线", py5 - 倒角半径),
                 ("椭圆弧线", 倒角半径, 倒角半径, 0, 0, 0, ax5, ay5),
                 ("水平线", px6 - 倒角半径),
                 ("椭圆弧线", 倒角半径, 倒角半径, 0, 0, 0, ax6, ay6),
                 ("垂直线", py7),
                 ("闭合",)]
        return 消息框路径

    def 右消息框(self, 开始点, 消息框宽度, 消息框高度, 背景色, 边框色, 边宽=1, 倒角半径=10) -> 路径元素:
        消息框路径 = self.右消息框路径(开始点, 消息框宽度, 消息框高度, 倒角半径)
        return self.高清图.连线(路径点列表=消息框路径, 填充颜色=背景色, 描边宽度=边宽, 描边颜色=边框色)

    @staticmethod
    def 左消息框路径(开始点, 消息框宽度, 消息框高度, 倒角半径=10):
        角位移 = 15
        角上距 = 53
        开始X, 开始Y = 开始点
        px1, py1 = 开始X, 开始Y
        px2, py2 = 开始X + 角位移, 开始Y - 角位移
        px3, py3 = 开始X + 角位移, 开始Y - 角上距
        px4, py4 = 开始X + 角位移 + 消息框宽度, 开始Y - 角上距
        px5, py5 = 开始X + 角位移 + 消息框宽度, 开始Y - 角上距 + 消息框高度
        px6, py6 = 开始X + 角位移, 开始Y - 角上距 + 消息框高度
        px7, py7 = 开始X + 角位移, 开始Y + 角位移
        ax3, ay3 = px3 + 倒角半径, py3
        ax4, ay4 = px4, py4 + 倒角半径
        ax5, ay5 = px5 - 倒角半径, py5
        ax6, ay6 = px6, py5 - 倒角半径
        # self.十字(ax6, ay6, 宽度=20, 高度=20)
        # "椭圆弧线": "A",  # (rx, ry), x_axis_rotation, (large_arc_flag, sweep_flag), (x, y)
        消息框路径 = [("移动", px1, py1),
                 ("直线", px2, py2),
                 ("垂直线", py3 + 倒角半径),
                 ("椭圆弧线", 倒角半径, 倒角半径, 0, 0, 1, ax3, ay3),
                 ("水平线", px4 - 倒角半径),
                 ("椭圆弧线", 倒角半径, 倒角半径, 0, 0, 1, ax4, ay4),
                 ("垂直线", py5 - 倒角半径),
                 ("椭圆弧线", 倒角半径, 倒角半径, 0, 0, 1, ax5, ay5),
                 ("水平线", px6 + 倒角半径),
                 ("椭圆弧线", 倒角半径, 倒角半径, 0, 0, 1, ax6, ay6),
                 ("垂直线", py7),
                 ("闭合",)]
        return 消息框路径

    def 左消息框(self, 开始点, 消息框宽度, 消息框高度, 背景色, 边框色, 边宽=1, 倒角半径=10) -> 路径元素:
        消息框路径 = self.左消息框路径(开始点, 消息框宽度, 消息框高度, 倒角半径)
        return self.高清图.连线(路径点列表=消息框路径, 填充颜色=背景色, 描边宽度=边宽, 描边颜色=边框色)
